home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
util1
/
yk211src.lha
/
Yak_2.11_Src
/
WBStartup
/
CapShift.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-11-08
|
1KB
|
49 lines
#include <devices/inputevent.h>
#include <proto/exec.h>
#include <proto/console.h>
#include <ctype.h>
#include "CapShift.h"
struct Library *ConsoleDevice;
void
CapShiftFunction(struct InputEvent *ev)
{
struct IOStdReq ioreq;
UBYTE ansicode0, ansicode1;
UWORD qual;
/* Exclude Amiga commands */
if (!(ev->ie_Qualifier & (IEQUALIFIER_LCOMMAND|IEQUALIFIER_RCOMMAND)))
{
/* Open the console device just to do keymapping. (unit -1 means any unit) */
if (!OpenDevice("console.device", -1, (struct IORequest *)&ioreq, 0))
{
ConsoleDevice = (struct Library *)ioreq.io_Device;
qual = ev->ie_Qualifier;
/* Decode the RAWKEY event */
if (RawKeyConvert(ev, &ansicode0, 1, NULL) == 1)
{
/* Translate printable character only */
if (isprint(ansicode0))
{
/* Get the unshifted code */
ev->ie_Qualifier &= ~(IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT);
RawKeyConvert(ev, &ansicode1, 1, NULL);
if (ansicode0 == ansicode1) /* Unlock the CapsLock */
ev->ie_Qualifier = qual & ~(IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT | IEQUALIFIER_CAPSLOCK);
else
ev->ie_Qualifier = qual;
}
}
CloseDevice((struct IORequest *)&ioreq);
}
}
}